/*
	File:		IGameState.h
	Course:		SGP 1303
	Author:		jmullens
	Purpose:	IGameState INTERFACE Class is the parent for
				the different game states
*/

#pragma once
#include "../../SGD_Wrappers/IListener.h"

////////////////////////////////////////////////////
// Interface class
//	- ONLY contains pure virtual methods
//	- Abstract Base Class
class IGameState : public IListener
{
public:
	
	////////////////////////////////////////////////
	// Pure virtual destructor
	virtual ~IGameState( void )		= 0
	{	/* do nothing */	}

	
	////////////////////////////////////////////////
	// Pure virtual methods MUST be overriden by children classes
	virtual void Enter	( void )	= 0;
	virtual void Exit	( void )	= 0;

	virtual bool Input	( void )	= 0;
	virtual void Update	( float fElaspedTime  )	= 0;
	virtual void Render	( void )	= 0;
	void HandleEvent(CEvent* pEvent) = 0;
};

